/**
 * @author huangyong
 */
public class QuickSort {
    public static void sort(int[] array) {
       sort(array, 0, array.length - 1);
    }

    public static void sort(int[] array, int start, int end) {
        if (start < end) {
            int i = start, j = end, x = array[start];
            while (i < j) {
                while (i < j && array[j] >= x) {
                    j--;
                }
                if (i < j) {
                    array[i++] = array[j];
                }

                while (i < j && array[i] < x) {
                    i++;
                }
                if (i < j) {
                    array[j--] = array[i];
                }
            }
            array[i] = x;
            sort(array, start, i - 1);
            sort(array, i + 1, end);
        }
    }
}
